/**
 * PHOSIDE: PHosphorylation Site IDentification Engine.
 * Copyright 2009 Digital Biology Lab, University of Missouri.
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 3 of the License, or (at your option) any later
 * version. <p/> This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more
 * details.
 */

package phoside.ui.task;

import cytoscape.task.Task;
import cytoscape.task.TaskMonitor;

import java.util.List;
import java.util.Map;

import phoside.disorder.DisorderInfoBatchRetrieverFromFasta;

import phoside.util.StaticFinalValues;


/**
 *
 */
public class DisorderReadTask extends AbstractTask {
    private final String dirDisorder;
    
    public DisorderReadTask(final String dirDisorder) {
            super("Reading disorder");
            this.dirDisorder = dirDisorder;
    }

    /**
     * Executes Task.
     */
    //@Override
    public void run() {
            try {
                    taskMonitor.setPercentCompleted(-1);
                    
                    taskMonitor.setStatus("reading.");
                    final DisorderInfoBatchRetrieverFromFasta disorderRetriever
                        = new DisorderInfoBatchRetrieverFromFasta(dirDisorder, StaticFinalValues.DEFAULTHEADERRULE);
                    obj = disorderRetriever.retrieve();

                    taskMonitor.setPercentCompleted(100);
                    taskMonitor.setStatus("read.");

                    success = true;
            } catch (Exception e) {
                    taskMonitor.setPercentCompleted(100);
                    taskMonitor.setStatus("Failed to read.\n"+e.getMessage());
                    e.printStackTrace();
                    return;
            }
    }

    public Map<String, List<Double>> getDisorder() {
        return (Map<String, List<Double>>)obj;
    }

}
